﻿/**
 * 
 * @file FITKRadiossSurfaceSeg.h
 * @brief Radioss表面分段类
 * @author LiBaojun (libaojunqd@foxmail.com)
 * @date 2025-09-18
 * 
 */ 
#ifndef FITK_RADIOSS_SURFACE_SEG_H
#define FITK_RADIOSS_SURFACE_SEG_H

#include "FITKAbstractRadiossSurface.h"
#include <QHash>
#include <QList>

namespace Radioss
{
    /**
     * @brief Radioss表面分段类
     * @author LiBaojun (libaojunqd@foxmail.com)
     * @date 2025-09-18
     */
    class FITKRadiossDataAPI FITKRadiossSurfaceSeg : public FITKAbstractRadiossSurface
    {
        Q_OBJECT
        FITKCLASS(Radioss, FITKRadiossSurfaceSeg)
        RadiossKeyWord(FITKRadiossSurfaceSeg, /SURF/SEG)

    public:
        /**
         * @brief Construct a new FITKRadiossSurfaceSeg object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2025-09-18
         */
        explicit FITKRadiossSurfaceSeg();
        /**
         * @brief Destroy the FITKRadiossSurfaceSeg object
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2025-09-18
         */
        virtual ~FITKRadiossSurfaceSeg() = default;
        /**
         * @brief 获取Radioss表面类型
         * @return RadiossSurfaceType
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2025-09-18
         */
        virtual FITKAbstractRadiossSurface::RadiossSurfaceType getRadiossSurfaceType() override;
        /**
         * @brief 添加表面
         * @param[i]  surfNodesIDs  表面节点ID列表
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2025-09-18
         */
        void addSurface(QList<int> surfNodesIDs);
        /**
         * @brief 获取表面节点ID列表
         * @return QList<int>
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2025-09-18
         */
        QList< QList<int> > getSurface(int element, const bool & lowerOrder= false);
        /**
         * @brief 获取所有单元ID
         * @return QList<int>
         * @author LiBaojun (libaojunqd@foxmail.com)
         * @date 2025-09-18
         */
        QList<int> getAllElement() const;
    };

} // namespace Radioss

#endif // FITK_RADIOSS_SURFACE_SEG_H